package com.wsjzzcbq.qianyuan.sys.service;

import com.alibaba.fastjson.JSONArray;
import com.baomidou.mybatisplus.extension.service.IService;
import com.wsjzzcbq.qianyuan.common.bean.R;
import com.wsjzzcbq.qianyuan.sys.bean.Menu;
import com.wsjzzcbq.qianyuan.sys.param.FindMenuParam;
import com.wsjzzcbq.qianyuan.sys.param.MenuParam;
import com.wsjzzcbq.qianyuan.sys.vo.MenuVo;

import java.util.List;

/**
 * MenuService
 *
 * @author wsjz
 * @date 2022/03/10
 */
public interface MenuService extends IService<Menu> {

    /**
     * 获取全部json格式菜单
     * @return
     */
    JSONArray menu();

    /**
     * 获取指定菜单数据的json格式菜单
     * @return
     */
    JSONArray menu(List<Menu> list);

    /**
     * 获取权限菜单
     * @return
     */
    JSONArray menuPermission();

    /**
     * 通过用户选中的节点查询全部节点
     * 由于elementui中的tree存在半选中节点，因此需要计算找到全部半选中节点
     * @param checkMenuIds
     * @return
     */
    List<Menu> getAllUserMenuByCheckedMenuIds(List<Long> checkMenuIds);

    /**
     * 获取父子关系的菜单数据
     * @return
     */
    R<List<MenuVo>> findMenuList(FindMenuParam param);

    /**
     * 添加或修改菜单
     * @param param
     * @return
     */
    R<?> addOrUpdate(MenuParam param);

    /**
     * 通过id查询菜单信息
     * @param id
     * @return
     */
    R<MenuVo> findMenuVoById(String id);

    /**
     * 删除节点及其所有子节点
     * @param id
     * @return
     */
    R<?> deleteMenuById(String id);
}
